1
函數式範型:轉換勝於變更
AI019Lesson 2
00:00

函數式範型將開發者的思維模式從「更新一個有狀態的盒子」轉變為 應用數學上的轉換 到不可變值。在 Elixir 中,資料永遠不會被改變;它只會以全新的形式重生。

1. 數學上的陳述

當你寫下 $x = a + 1$ 時,並不是將結果賦予變數。相反地,你只是簡單地 陳述 表示表達式 $x$ 與 $a + 1$ 具有相同的值。這類似於代數邏輯,在特定情境中 $x$ 代表一個固定的值。

2. 不可變性作為保障

在 Elixir 中, 所有值都是不可變的。資料一旦建立便無法更改。這消除了「副作用」——即某個函數可能意外修改全域變數或傳入的物件——確保程式碼具有可預測性且執行緒安全。

之前(輸入)"elixir"String.capitalize之後(結果)"Elixir"原始資料保持不變

3. 轉換與變更之別

我們從不就地修改資料。Elixir 沒有賦值運算子;相反地,它試圖 將值與模式進行匹配。要「改變」一個值,我們會將原始資料傳遞給一個函數,產生一個完全新的版本。

iex> name = "elixir"
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir"(依然完好無損!)
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>